package guyubao.com.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import guyubao.com.entity.dto.AccountDto;
import guyubao.com.entity.vo.request.*;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.Date;
import java.util.List;

public interface AccountService extends IService<AccountDto>, UserDetailsService {
    // 获得用户名或邮箱的用户
    AccountDto findAccountByNameOrEmail(String text);
    // 获得id
    AccountDto findAccountById(String id);
    // 发送类型邮件
    String sendEmailVerifyCode(String type, String email, String ip);
    // 发送类型邮件-id/用户名;
    String sendEmailVerifyCodeOther(String type, String otherKey,String otherValue, String ip);
    // 注册
    String registerEmailAccount(EmailRegisterVoRequest vo);
    // 重置密码：邮箱确认
    String resetConfirm(ConfirmResetVoRequest vo);
    // 重置密码：密码重置
    String resetEmailAccountPassword(EmailResetVoRequest vo);
    // 重置邮箱
    String resetEmail(ResetEmailVoRequest vo);
    // 重置用户名
    String resetUserName(ResetUsernameVoRequest  vo);
    // 删除自己
    String deleteOneself(String id);
    // 获取用户的封禁时间
    Date  getDisableTimeById(String id);
    // 管理员获取数据库中所有用户
    List<AccountDto> getAllAccount();
    // 管理员获取数据库中所有用户以分页方式返回
    Page<AccountDto> getAllAccpuntPage(long size,long current,String column,String val);
    // 管理员封禁用户
    String disableAccount(String id,int hour);
    // 管理员解封用户
    String ableAccount(String id);
}
